<?php
namespace ZN\Authentication;

interface UserInterface
{
	//----------------------------------------------------------------------------------------------------
	//
	// Yazar      : Ozan UYKUN <ozanbote@windowslive.com> | <ozanbote@gmail.com>
	// Site       : www.zntr.net
	// Lisans     : The MIT License
	// Telif Hakkı: Copyright (c) 2012-2016, zntr.net
	//
	//----------------------------------------------------------------------------------------------------
	
	//----------------------------------------------------------------------------------------------------
	// Register
	//----------------------------------------------------------------------------------------------------
	// 
	// @param  array 	   $data
	// @param  bool/string $autoLogin
	// @param  string      $activationReturnLink
	// @return bool
	//
	//----------------------------------------------------------------------------------------------------
	public function register($data, $autoLogin, $activationReturnLink);
	
	//----------------------------------------------------------------------------------------------------
	// Update
	//----------------------------------------------------------------------------------------------------
	// 
	// @param  string $old
	// @param  string $new
	// @param  string $newAgain
	// @param  array  $data
	// @return bool
	//
	//----------------------------------------------------------------------------------------------------
	public function update($old, $new, $newAgain, $data);
	
	//----------------------------------------------------------------------------------------------------
	// Login
	//----------------------------------------------------------------------------------------------------
	// 
	// @param  string $un
	// @param  string $pw
	// @param  bool   $rememberMe
	// @return bool
	//
	//----------------------------------------------------------------------------------------------------
	public function login($un, $pw, $rememberMe);
	
	//----------------------------------------------------------------------------------------------------
	// Logout
	//----------------------------------------------------------------------------------------------------
	// 
	// @param  string  $redirectUrl
	// @param  numeric $time
	// @return void
	//
	//----------------------------------------------------------------------------------------------------
	public function logout($redirectUrl, $time);
	
	//----------------------------------------------------------------------------------------------------
	// Is Login
	//----------------------------------------------------------------------------------------------------
	// 
	// @param  void
	// @return bool
	//
	//----------------------------------------------------------------------------------------------------
	public function isLogin();
	
	//----------------------------------------------------------------------------------------------------
	// Forgot Password
	//----------------------------------------------------------------------------------------------------
	// 
	// @param  string $email
	// @param  string $returnLinkPath
	// @return bool
	//
	//----------------------------------------------------------------------------------------------------
	public function forgotPassword($email, $returnLinkPath);
	
	//----------------------------------------------------------------------------------------------------
	// Activation Complete
	//----------------------------------------------------------------------------------------------------
	// 
	// @param  void
	// @return bool
	//
	//----------------------------------------------------------------------------------------------------
	public function activationComplete();
	
	//----------------------------------------------------------------------------------------------------
	// Data
	//----------------------------------------------------------------------------------------------------
	// 
	// @param  string $tbl
	// @return object
	//
	//----------------------------------------------------------------------------------------------------
	public function data($tbl);
	
	//----------------------------------------------------------------------------------------------------
	// Active Count
	//----------------------------------------------------------------------------------------------------
	// 
	// @param  void
	// @return numeric
	//
	//----------------------------------------------------------------------------------------------------
	public function activeCount();
	
	//----------------------------------------------------------------------------------------------------
	// Banned Count
	//----------------------------------------------------------------------------------------------------
	// 
	// @param  void
	// @return numeric
	//
	//----------------------------------------------------------------------------------------------------
	public function bannedCount();
	
	//----------------------------------------------------------------------------------------------------
	// Count
	//----------------------------------------------------------------------------------------------------
	// 
	// @param  void
	// @return numeric
	//
	//----------------------------------------------------------------------------------------------------
	public function count();
	
	//----------------------------------------------------------------------------------------------------
	// Error
	//----------------------------------------------------------------------------------------------------
	// 
	// @param  void
	// @return string
	//
	//----------------------------------------------------------------------------------------------------
	public function error();
	
	//----------------------------------------------------------------------------------------------------
	// Success
	//----------------------------------------------------------------------------------------------------
	// 
	// @param  void
	// @return string
	//
	//----------------------------------------------------------------------------------------------------
	public function success();
}